package reflection;

import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * 反射练习
 */
public class ReflectionExercise02 {

    public static void main(String[] args) throws Exception {

        /*
            1.利用Class类的forName方法得到File类的class对象
            2.在控制台打印File类的所有构造器
            3.通过newInstance的方法创建File对象在根目录下
         */

        String filePath = "D:\\IdeaCode\\javaStudy\\myNew.txt";
        Class cls = Class.forName("java.io.File");
        Constructor[] constructors = cls.getConstructors();
        for (Constructor constructor : constructors) {
            System.out.println("====================");
            System.out.println("本类中所有构造器=" + constructor.getName());
            Class[] parameterTypes = constructor.getParameterTypes();
            for (Class parameterType : parameterTypes) {
                System.out.println("该构造器的形参类型=" + parameterType);
            }
        }
        //指定得到构造器，执行构造器，创建file对象
        Constructor constructor = cls.getConstructor(String.class);
        Object file = constructor.newInstance(filePath);   //创建File对象
        System.out.println("file的运行类型=" + file.getClass());
        //得到方法对象，创建文件
        Method createNewFile = cls.getMethod("createNewFile");
        createNewFile.invoke(file);
        System.out.println("文件创建成功...");

    }
}

